package day02;

public class DataTypeDemo {
    public static void main(String[] args) {

        //类型间的转换
        /*
        int a=5;
        long b=a;//自动/隐式类型转换
        int c =(int)b;//强制类型转换

        long d=5;//自动类型转换
        double e =5;//自动类型转换
        System.out.println(e);//5.0

        long f=1000000000000000L;
        int g=(int)f;
        System.out.println(g);//1410065480,强制转有可能发生溢出

        double h= 25.231;
        int i=(int)h;
        System.out.println(i);//强制转有可能丢失精度
        //short /byte /char参与运算，先转为int类型，再计算
        byte b1=5;
        byte b2=6;
        byte b3=(byte) (b1+b2);

        System.out.println(2+2);//4
        System.out.println(2+'2');//52,2加上'2'的码50
        System.out.println('2'+'2');//100,'2'的码50加上'2'的码50
        System.out.println('2');//2,没有参与运算，直接输出

         */

        //char类型,2字节
        /*
        char c1='女';
        char c2='f';
        char c3='6';
        char c4=' ';
        //char c5= 女;//编译错误，字符直接量应当放到单引号里
        //char c6='';//编译错误，必须有字符
        //char c7='10'//编译错误，只能装一个字符

        char c8=65;//0-65535之间
        System.out.println(c8);//'A',println()时会依据c8的类型来做展示
                               //若c8位char类型，则以字符形式展示
                               //若c8位int类型，则以数字形式展示
        char c9='\'';  //特殊字符需要用\来转译
         */

        //boolean类型，1字节
        /*
        boolean a=true;
        boolean b =false;//布尔型只能存储true或false
        //boolean c =23; //编译错误
         */

        //double类型，8字节
        /*
         double b=2.333;
         float c=2.3333F;//若不加F或f则默认为double类型
        double a=3.0, d =2.9;
        System.out.println(a-d);
        //本应该是0.1实际输出
        //0.10000000000000009  发生舍入误差
        //double类型，不能用于精确场合
          */

        //long类型，8字节
        /*
        long a=25L;//25L为长整型
        // long b=100000000000;//编译错误， 100亿默认为int类型，但是超过int类型范围
        long c=10000000000L;//100亿L为长整型
        long d =365L*24*60*60*1000;//去年一年所经历的毫秒数
        System.out.println(d);//31536000000
        long e=1000000000*2*10L;
        System.out.println(e);//200亿
        long f=1000000000*3*10L;
        System.out.println(f);//不是300亿
        long g=1000000000L*3*10;
        System.out.println(g);//300亿
         */

        //int类型，4字节
        /*
        int a=250;//250为整数直接量，默认int类型
        //int b =100000000000;//编译错误，100亿默认为int类型，但超过int类型最大范围
        //int c =25.323;//编译错误，整型变量中只能装整数

        System.out.println(5/2);//2
        System.out.println(2/5);//0
        System.out.println(5.0/2);//2.5
        System.out.println(5/2.0);//2.5

        int d =2147483647;//int最大值
        d=d+1;
        System.out.println(d);//-2147483648溢出了
        */


    }
}
